package com.summer.singleton;

/**
 * @Author: Gosin
 * @Date: 2020/5/27 10:35
 * 饿汉式的单例模式，由于有一些吹毛求疵的人对于懒汉式有争议，就是我没有使用这个对象，你为什么就给我创建出来了，这不是浪费资源么，依我之见纯属没事找事
 * 但是面试的时候对于饿汉式的考究还是有的
 * volatile这个单词是必须要加入的，否则对于创建出的对象，有可能会出现使用的对象资源会是半初始状态，这个原因是因为cpu的指令重排序的问题
 */
public class DCLSingleton {
    private static volatile DCLSingleton instance;
    private DCLSingleton(){};
    public static DCLSingleton getInstance(){
        if(instance == null){
            synchronized(DCLSingleton.class){
                if(instance == null){
                    instance = new DCLSingleton();
                }
            }
        }
        return instance;
    }
}
